Skip to content

Conversation

@sebastian2443
Copy link
Collaborator

So, ich habe jetzt einfach mal angefangen.
Unter Python 3.4.3 und Pygame 1.9.2b1 sollte der Python Code ausführbar sein.

Es öffnet sich ein Fenster mit einer Menustruktur.
Unter Optionen können die FPS und die Fenstergröße angepasst werden.
Durch "Start" lässt sich ein kleines "Spiel" starten.
Ein Viereck das man nach links und rechts bewegen kann.
Mittels ESC springt man zu dem Menu zurück.

Ich habe keine Ahnung ob die Struktur überhaupt so passt.
Da muss sicherlich viel geändert werden.
Und sicherlich sind es auch viel zu wenige Kommentare.
Aber bevor ich da jetzt weiter schreibe, wollte ich erst mal wissen,
ob der Weg der Richtige ist.

Ich bin mir auch unsicher, ob ein PullRequest jetzt das richtige ist, oder ich den Code lieber als Thread hätte erstellen sollen?!

So, ich habe jetzt einfach mal angefangen.
Unter Python 3.4.3 und Pygame 1.9.2b1 sollte der Python Code ausführbar sein. 

Es öffnet sich ein Fenster mit einer Menustruktur. 
Unter Optionen können die FPS und die Fenstergröße angepasst werden.
Durch "Start" lässt sich ein kleines "Spiel" starten. 
Ein Viereck das man nach links und rechts bewegen kann.
Mittels ESC springt man zu dem Menu zurück. 

Ich habe keine Ahnung ob die Struktur überhaupt so passt. 
Da muss sicherlich viel geändert werden. 
Und sicherlich sind es auch viel zu wenige Kommentare. 
Aber bevor ich da jetzt weiter schreibe, wollte ich erst mal wissen, 
ob der Weg der Richtige ist.

Ich bin mir auch unsicher, ob ein PullRequest jetzt das richtige ist, oder ich den Code lieber als Thread hätte erstellen sollen?!
StartMenu.py Outdated
import os


class ConfigHandler(object):
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Handler im Namen ist ein “smell“. Das ist so ein völlig nichtssagender Namenszusatz. Eine Klasse die nur aus statischen Methoden und globalem Zustand besteht ist IMHO ein Fehler.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ich habe mir überlegt, dass wir später vielleicht mehrere Files(Konfigurationen) einlesen
und es sich anbietet, dass sich eine Klasse darum kümmert.
Aber ich wusste nicht, außer mit statischen Methoden, wie ich auf die eingelesenen Dateien zugreifen kann.
Sollte ich das Objekt einfach initialisieren und die Instanz jeder Klasse die sie braucht übergeben?
Vererbung macht für diesen Fall ja keinen Sinn. Dann sind es ja wieder getrennte Datensätze.

Dachte Handler steht für handhaben. Wäre ConfigManager passender?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Das ganze Ding ist IMHO viel zu kompliziert. Es ist doch gar nicht klar ob man diese Komplexität später auch tatsächlich braucht. Stichworte KISS und YAGNI. :-)

Eine Klasse die nur statische ”Methoden” enthält ist keine Klasse sondern nur ein Namensraum für Funktionen. Dafür sind in Python Module vorgesehen. Das das Ding so statisch ist, macht zum Beispiel Unit-Tests schwierig bis unmöglich.

Irgendwas handhaben/behandeln oder verwalten (Manager) tut letztendlich so ziemlich jede Klasse, darum kann man den Namenszusatz Handler oder Manager eigentlich auch an jeden Klassennamen dran pappen. Damit ist dieser Zusatz aber sinnlos weil der keine wirkliche Information enthält. Configurations wäre ausreichend.

Wenn das verschachtelt sein soll, würde ich einfach JSON als Konfigurationsformat verwenden. Der Code das zu unterstützen ist viel einfacher und man kann beliebig tief hierarchisch Informationen speichern. Falls Kommentare in der Konfigurationsdatei gewünscht sind, könnte man überlegen statt dessen YAML zu verwenden.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

KISS und YAGNI leuchten mir ein.
Aber wie wird das gelöst, wenn 2-3 unabhänige Klassen auf die selben Daten zugreifen müssen? Das geht doch nur mittels einer Klasse wegen einer gemeinsamen Datenhaltung.
Oder sollte jede Klasse für sich die Daten immer wieder neueinlesen?
Ich habe jetzt einfach eine Instanz erzeugt und jeder Klasse die sie braucht übergeben.

Mit JSON wäre es einfacher zu lösen. Die Datei sehe dann aber nicht mehr so wartbar und freundlich aus. Ich wollte, dass das Menu durch die Datei editiertbar ist. Aber das ist sicherlicher zu weit gedacht.

@Marrin
Copy link
Collaborator

Marrin commented Aug 9, 2016

So ganz generell würde ich gar nicht erst anfangen wollen einzelne Module anzulegen die nicht durch ein Package zusammengefasst werden.

@sebastian2443
Copy link
Collaborator Author

Ich habe jetzt einige Dinge ausgebessert. Aber noch nicht alle.
Morgen versuche ich den Rest.
Wie ersetze ich denn morgen meinen PullRequest mit der neueren Version?

@Marrin
Copy link
Collaborator

Marrin commented Aug 9, 2016

Mach einen neuen, oder arbeite an dem sebastian2443-patch-1-Branch weiter.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants